/**
 * @author LKQ
 * @date 2022/2/26 10:48
 * @description
 * [1-9] 共有9 个数字
 * [10-99] 共有90个数字 * 每个数字2位 = 90 * 2;
 * [100-999] 900 * 3
 * 所有对于x位数字，当前x位有 9 * 10^(x-1) * x个数字;
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.findNthDigit(191);
    }

    public int findNthDigit(int n) {
        // d代表当前位数，count代表当前位数下的数字贡献。
        int d = 1, count = 9;
        while (n > (long) d * count) {
            n -= d * count;
            d++;
            count *= 10;
        }
        int index = n - 1;
        int start = (int) Math.pow(10,d-1);
        // 找到所在的正数
        int num = start +  index / d;
        // 找到数字的下标
        int digitIndex = index % d;
        int digit = (num / (int) (Math.pow(10,d - digitIndex -1)))  % 10;
        return digit;
    }

}
